Cloud Functions (2세대)
1. 개요
1. 개요
Cloud Functions (2세대)는 Google Cloud 플랫폼에서 제공하는 완전 관리형 서버리스 컴퓨팅 서비스이다. 이는 함수형 서비스(FaaS)의 일종으로, 개발자가 서버 인프라를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있게 해준다. Google은 2021년 10월 14일에 2세대 버전을 정식 출시했다.
이 서비스는 이벤트에 반응하여 코드를 실행하는 것을 핵심으로 한다. 사용자는 HTTP 요청, Cloud Storage의 파일 변경, Pub/Sub 메시지, Firebase 이벤트 등 다양한 트리거를 설정할 수 있다. 트리거가 발생하면 Cloud Functions (2세대)는 자동으로 관련 함수를 실행하며, 사용한 컴퓨팅 시간과 리소스에 대해서만 비용을 지불한다.
1세대 아키텍처를 대체하며 출시된 2세대는 Cloud Run 및 Google Kubernetes Engine과 동일한 컨테이너 기반 인프라 위에 구축되었다. 이를 통해 더 긴 최대 실행 시간, 더 큰 인스턴스, 향상된 성능 및 더 나은 보안 통제 기능을 제공한다. 또한 VPC 네트워크와의 통합이 개선되어 프라이빗 네트워크 내부의 리소스에 더 쉽게 접근할 수 있다.
Cloud Functions (2세대)는 마이크로서비스, API 백엔드, 데이터 처리 파이프라인, IoT 백엔드, 실시간 분석 등 광범위한 사용 사례에 적합하다. Node.js, Python, Go, Java, .NET 등 여러 프로그래밍 언어 런타임을 지원한다.
2. 주요 특징
2. 주요 특징
Cloud Functions (2세대)는 1세대를 기반으로 하여 확장성, 성능, 개발자 경험을 크게 향상시킨 서버리스 함수 실행 환경이다. 핵심 특징은 기존의 이벤트 기반 함수 실행 모델을 유지하면서, 컨테이너 기술과 Cloud Run의 인프라를 활용하여 구축된 새로운 아키텍처에 있다. 이를 통해 함수의 최대 실행 시간이 60분으로 확대되고, 하나의 함수에 여러 엔드포인트를 정의할 수 있으며, 더 많은 CPU와 메모리 옵션을 선택할 수 있게 되었다.
또한, 2세대는 HTTP 요청을 직접 처리할 수 있는 내장형 HTTP 서버를 제공하여, 웹훅이나 API 엔드포인트를 더욱 쉽게 구축할 수 있다. VPC 네트워크와의 통합이 개선되어 사설 IP 주소를 통해 Google Cloud 내부 서비스에 안전하게 접근할 수 있으며, 동시 실행 인스턴스 수를 제어하는 동시성 설정 기능을 통해 비용과 성능을 세밀하게 관리할 수 있다. 이러한 변화는 마이크로서비스 아키텍처 패턴을 구현하거나 복잡한 비즈니스 로직을 처리하는 데 더욱 적합한 플랫폼을 제공한다.
3. 아키텍처
3. 아키텍처
Cloud Functions (2세대)의 아키텍처는 1세대와 근본적으로 다르며, Google Cloud Run 및 Cloud Events와의 긴밀한 통합을 기반으로 구축되었다. 핵심 변화는 이벤트 기반 아키텍처를 채택하고, 함수 실행 환경을 완전히 새로운 플랫폼 위에 재구성한 점이다.
구체적으로, 2세대의 각 함수는 Cloud Run 서비스로 배포되어 실행된다. 이는 함수가 컨테이너 형태로 패키징되어, 확장성과 격리성을 제공하는 Cloud Run의 인프라 위에서 동작함을 의미한다. 또한, Eventarc를 통해 다양한 Google Cloud 서비스 및 외부 소스에서 발생하는 이벤트를 표준화된 CloudEvents 형식으로 수신하여 함수를 트리거한다.
이러한 아키텍처 변화로 인해 2세대는 1세대에 비해 훨씬 긴 최대 실행 시간(최대 60분[2]), 더 큰 인스턴스 메모리(최대 16GiB), 그리고 동시에 여러 요청을 처리할 수 있는 동시성 기능을 지원하게 되었다. 또한, VPC 네트워크와의 통합이 개선되어 사설 네트워크 내 리소스에 대한 접근이 용이해졌다.
4. 1세대와의 차이점
4. 1세대와의 차이점
Cloud Functions 2세대는 1세대 아키텍처를 기반으로 하여 성능, 확장성, 통합성 측면에서 상당한 개선을 이루었다. 가장 핵심적인 차이는 새로운 이벤트 기반 아키텍처를 채택했다는 점이다. 1세대가 HTTP 트리거와 백그라운드 트리거를 구분하는 구조였다면, 2세대는 모든 함수 호출을 Cloud Run과 Google Kubernetes Engine 위에서 실행되는 컨테이너 기반의 통합된 이벤트 프레임워크를 통해 처리한다. 이로 인해 함수의 콜드 스타트 시간이 단축되고, 최대 동시 실행 인스턴스 수가 크게 증가하여 더 높은 처리량을 지원할 수 있게 되었다.
또한, VPC 네트워크와의 통합이 획기적으로 향상되었다. 1세대에서는 서버리스 VPC 액세스 커넥터를 별도로 구성해야 했지만, 2세대는 기본적으로 VPC 내부에서 실행되어 사설 IP 주소를 사용하며, Google Cloud 서비스는 물론 온프레미스 시스템과도 보다 쉽고 안전하게 통신할 수 있다. 보안 측면에서도 IAM 조건부 역할 부여와 같은 고급 정책을 함수 수준에서 적용할 수 있는 기능이 추가되었다.
사용자 경험 측면에서도 개선이 이루어졌다. 함수당 최대 16GB의 메모리와 4개의 vCPU를 할당할 수 있어 더욱 복잡한 워크로드를 처리할 수 있게 되었다. 또한, 트래픽 분할 기능을 통해 새로운 함수 버전으로의 점진적 롤아웃이 가능해졌으며, 함수의 최대 실행 시간(타임아웃)이 60분으로 확대되어 장시간 실행되는 배치 작업에도 적합해졌다. 이러한 변화들은 2세대가 단순한 함수 실행 서비스를 넘어, 보다 강력하고 유연한 서버리스 애플리케이션 플랫폼으로 진화했음을 보여준다.
5. 사용 사례
5. 사용 사례
Cloud Functions (2세대)는 이벤트 중심의 서버리스 실행 환경으로, 다양한 실용적인 사용 사례를 제공한다. 주로 마이크로서비스 아키텍처의 구성 요소, 데이터 처리 파이프라인의 일부, 또는 애플리케이션의 백엔드 로직을 구현하는 데 활용된다.
일반적인 사용 사례로는 실시간 데이터 처리와 변환이 있다. 예를 들어, Cloud Storage 버킷에 새로운 이미지 파일이 업로드되면 함수가 자동으로 트리거되어 썸네일을 생성하거나, Firebase에서 사용자 데이터가 변경될 때 이를 처리하여 다른 시스템에 동기화하는 작업을 수행할 수 있다. 또한 Pub/Sub 메시지를 구독하여 스트리밍 데이터를 필터링하거나 집계하는 이벤트 기반 처리에도 적합하다.
웹 애플리케이션의 백엔드 API 엔드포인트를 구축하는 데에도 널리 사용된다. HTTP 트리거를 통해 RESTful API나 웹훅 핸들러를 빠르게 생성할 수 있어, 모바일 앱이나 싱글 페이지 애플리케이션(SPA)의 서버리스 백엔드를 구성하는 데 용이하다. 인증, 포맷 변환, 타 서비스 호출 등의 비즈니스 로직을 독립적인 함수 단위로 개발하고 관리할 수 있다.
기타 사용 사례에는 IT 운영 자동화가 포함된다. Cloud Logging 또는 Cloud Monitoring 알림을 수신하여 특정 조건에 따라 자동 대응 조치를 취하거나, Cloud Scheduler와 연동하여 정기적인 배치 작업을 실행하는 스크립트를 함수로 구현할 수 있다. 이는 DevOps 워크플로우를 간소화하고 인프라 관리 부담을 줄이는 데 기여한다.
6. 지원되는 런타임 및 트리거
6. 지원되는 런타임 및 트리거
Cloud Functions (2세대)는 다양한 프로그래밍 언어를 위한 런타임을 지원하며, 여러 Google Cloud 서비스와 외부 이벤트로부터 함수를 트리거할 수 있다.
주요 지원 런타임으로는 Node.js, Python, Go, Java, .NET이 포함된다. Ruby와 PHP 런타임도 사용할 수 있다. 각 런타임은 특정 버전을 지원하며, 사용자는 함수 생성 시 원하는 런타임을 선택할 수 있다. 이를 통해 개발자는 익숙한 언어와 프레임워크를 활용하여 비즈니스 로직에 집중할 수 있다.
함수를 실행시키는 트리거는 크게 HTTP 트리거와 이벤트 기반 트리거로 구분된다. HTTP 트리거는 표준 HTTP 요청을 통해 함수를 직접 호출하는 방식이다. 이벤트 기반 트리거의 출처는 매우 다양하며, 주요한 것으로는 Cloud Storage 버킷의 객체 변경, Pub/Sub 토픽의 메시지, Firebase 실시간 데이터베이스 업데이트, Firestore 문서 변경 등이 있다. 또한 Cloud Logging 로그 항목이나 Eventarc를 통한 90개 이상의 Google Cloud 서비스 이벤트도 트리거로 사용할 수 있다.
이러한 광범위한 런타임과 트리거 지원은 마이크로서비스 아키텍처와 이벤트 기반 아키텍처를 구현하는 데 유연성을 제공한다. 개발자는 특정 이벤트에 반응하는 함수를 쉽게 작성하고, Google Cloud의 생태계 내에서 다른 서비스와 원활하게 통합된 애플리케이션을 구축할 수 있다.
7. 배포 및 관리
7. 배포 및 관리
Cloud Functions (2세대)의 배포 및 관리 방식은 Google Cloud 콘솔, gcloud CLI, Cloud Build를 포함한 다양한 도구를 통해 이루어진다. 개발자는 소스 코드를 직접 업로드하거나 Cloud Storage 버킷이나 Artifact Registry에 저장된 컨테이너 이미지를 참조하여 함수를 배포할 수 있다. 특히 컨테이너 이미지를 사용하는 방식은 사용자 정의 런타임 환경 구축과 복잡한 의존성 관리에 유연성을 제공한다.
함수의 배포 구성은 gcloud functions deploy 명령어나 Google Cloud Console의 웹 인터페이스를 통해 관리된다. 여기서는 함수의 트리거 유형(HTTP, Cloud Storage, Pub/Sub 등), 런타임 버전, 할당된 메모리, 타임아웃 시간, 서비스 계정, VPC 네트워크 연결, 환경 변수 등을 설정할 수 있다. 배포 후에는 로깅, 모니터링, 트래픽 관리가 통합된 방식으로 이루어진다.
관리 측면에서는 Google Cloud Console의 Cloud Functions 섹션에서 모든 함수의 상태, 호출 횟수, 실행 시간, 오류율 등을 한눈에 확인할 수 있다. 상세한 로그는 Cloud Logging과 연동되어 확인되며, 지표는 Cloud Monitoring을 통해 시각화되고 경고 정책을 설정할 수 있다. 버전 관리와 트래픽 분할 기능을 통해 새로운 함수 버전을 점진적으로 롤아웃하거나 이전 버전으로 쉽게 롤백할 수 있는 체계를 제공한다.
8. 장단점
8. 장단점
Cloud Functions (2세대)는 1세대 대비 개선된 아키텍처를 바탕으로 여러 가지 장점을 제공하지만, 새로운 구조로 인한 고려사항도 존재한다.
주요 장점으로는 향상된 성능과 확장성이 있다. 새로운 아키텍처는 컨테이너 기반으로 구축되어 콜드 스타트 시간이 크게 단축되었다. 또한 Eventarc를 통한 90개 이상의 이벤트 소스와의 통합이 가능해져, Google Cloud 서비스는 물론 타사 서비스 및 사용자 정의 이벤트도 쉽게 처리할 수 있다. 최대 60분의 함수 실행 시간 제한, 최대 16GB의 메모리, 최대 4개의 vCPU 할당 등 향상된 리소스 옵션은 더 무거운 워크로드를 처리하는 데 유리하다. Cloud Run 및 Anthos와의 통합을 바탕으로 한 아키텍처는 일관된 개발 및 배포 경험을 제공한다.
반면, 몇 가지 단점이나 고려해야 할 점도 있다. 가장 큰 변화는 항상 최소 하나의 컨테이너 인스턴스가 실행되어 대기하는 새로운 요금 모델이다. 이는 지연 시간을 줄여주지만, 매우 간헐적으로만 호출되는 함수의 경우 1세대에 비해 비용이 더 높아질 수 있다. 또한 Virtual Private Cloud 네트워킹이 기본적으로 사용되며, 1세대에서 사용하던 서버리스 VPC 액세스 커넥터 대신 VPC 라우팅을 활용한다. 이는 보안과 네트워크 제어 측면에서는 유리하지만, 네트워크 구성이 다소 복잡해질 수 있다. 아키텍처가 근본적으로 달라 기존 1세대 함수를 마이그레이션할 때 코드 수정이 필요할 수 있다.
9. 관련 서비스 및 통합
9. 관련 서비스 및 통합
Cloud Functions (2세대)는 Google Cloud 생태계 내의 다른 서비스들과 긴밀하게 통합되어 다양한 애플리케이션 시나리오를 지원한다. 특히 이벤트 기반 아키텍처를 구현하는 데 핵심적인 역할을 하며, Google Cloud의 여러 관리형 서비스에서 발생하는 이벤트를 처리하는 서버리스 함수를 제공한다.
주요 통합 서비스로는 Cloud Storage 버킷의 파일 생성/삭제, Pub/Sub 토픽의 메시지, Firestore 데이터베이스의 문서 변경과 같은 이벤트를 트리거로 사용할 수 있다. 또한 Cloud Run 및 Cloud Scheduler와도 연동되어 정기적인 작업 실행이나 HTTP 요청 처리가 가능하다. 이러한 통합 덕분에 개발자는 복잡한 인프라 관리 없이 마이크로서비스나 데이터 처리 파이프라인을 쉽게 구축할 수 있다.
보안 및 관리 측면에서는 Cloud IAM을 통해 함수에 대한 접근 권한을 세밀하게 제어할 수 있으며, Secret Manager를 활용해 API 키나 비밀번호 같은 민감한 정보를 안전하게 관리하고 함수에서 사용할 수 있다. 로깅과 모니터링은 Cloud Logging과 Cloud Monitoring 서비스와 자동으로 연동되어 수행된다.
이러한 광범위한 통합은 Google Cloud 플랫폼을 하나의 통합된 환경으로 만들어 주며, 개발자가 서버리스 컴퓨팅의 이점을 최대한 활용하면서도 강력한 클라우드 네이티브 애플리케이션을 빠르게 개발하고 배포할 수 있도록 돕는다.
10. 여담
10. 여담
Cloud Functions (2세대)는 Google Cloud의 핵심 서버리스 컴퓨팅 서비스로, Google이 2021년 10월 14일에 공식 출시했다. 이 서비스는 개발자가 인프라 관리 없이 코드를 실행할 수 있는 함수형 서비스(FaaS) 플랫폼을 제공한다. 2세대의 출시는 기존 1세대 아키텍처의 한계를 해결하고, 클라우드 런 및 이벤트 아크와의 긴밀한 통합을 통해 더욱 확장성 높은 환경을 구축하는 데 중점을 두었다.
서비스의 내부 아키텍처는 클라우드 런을 기반으로 재구성되어, 함수가 컨테이너 형태로 패키징되고 실행된다. 이 변화는 컨테이너 표준을 따르게 함으로써 개발자에게 더 나은 이식성과 일관된 로컬 테스트 환경을 제공하는 이점을 가져왔다. 또한, 이벤트 아크를 통한 새로운 이벤트 수신 방식은 더욱 세분화된 트리거 관리와 글로벌 이벤트 라우팅을 가능하게 했다.
이러한 기술적 진화는 단순한 업데이트를 넘어, Google Cloud의 서버리스 생태계 전략을 반영한다. Cloud Functions (2세대)는 클라우드 런, 이벤트 아크, 워크플로 등 다른 서버리스 제품군과 함께 사용되어 복잡한 애플리케이션을 구성하는 데 유용한 빌딩 블록 역할을 한다. 결과적으로 개발자는 더욱 유연하고 강력한 서버리스 마이크로서비스를 구축할 수 있게 되었다.
